//package com.miaoxie.forum.module.auth.shared.filter;
//
//import com.miaoxie.forum.module.auth.shared.utils.Login;
//import com.miaoxie.forum.module.auth.shared.utils.MD5;
//import org.codehaus.jettison.json.JSONException;
//
//import javax.servlet.*;
//import javax.servlet.http.Cookie;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import javax.servlet.http.HttpSession;
//import java.io.IOException;
//
///**
// * Created by miaoxie on 2017/3/6.
// */
//public class LoginFilter  implements Filter {
//    @Override
//    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
//        // 允许跨域访问
//        HttpServletResponse res = (HttpServletResponse) response;
//        res.setHeader("Access-Control-Allow-Origin", "*");
//        res.setCharacterEncoding("UTF-8");
//        /**
//         * 系统分为三类请求，一类是前往后台管理，另外一类是前往业务数据请求，还有一类是开发性接口，不需要登陆验证
//         * 1. 如果请求路径是后台管理，则检查session，控制登录
//         * 2. 如果是业务接口请求，不进行session检查，一律放行
//         * 3. 如果是开发性接口，不进行session检查，不进行用户校验
//         *
//         * 注意：两种请求都设置session， session中只保留用户工号；
//         *      两种请求都需要在UserContext中存储当前会话用户，在会话结束时清除。
//         */
//        HttpServletRequest req = (HttpServletRequest) request;
//        HttpServletResponse resp = (HttpServletResponse) response;
//        HttpSession httpSession = req.getSession();
//        String requestURL = req.getRequestURL().toString();
//        /*
//            如果配置在escapeUrls中则跳过检查；
//        */
//        if(isFilter(requestURL)){
//            doFilter(request, response, filterChain);
//        }else if( requestURL.contains("login.html") || isLogin(req)) {
//            doFilter(request, response, filterChain);
//        }else{
//            resp.sendRedirect(req.getContextPath()+"/page/view/login.html");
//        }
//
//    }
//
//    @Override
//    public void destroy() {
//
//    }
//
//    private enum RequestForward {
//        MANAGER_PAGE,
//        RESTFULL_INTERFACE
//    }
//    @Override
//    public void init(FilterConfig filterConfig) throws ServletException {
//    }
//
//    private boolean isLogin(HttpServletRequest req) {
//        Cookie[] cookies = req.getCookies();
//
//        String username = "";
//        String password = "";
//
//        if (cookies != null) {
//            for (int i = 0; i < cookies.length; i++) {
//                Cookie c = cookies[i];
//
//                if (c.getName().equalsIgnoreCase("userName")) {
//                    username = c.getValue();
//                } else if (c.getName().equalsIgnoreCase("passWord")) {
//                    password = c.getValue();
//                    if(password!=null && !"".equals(password)){
//                        try {
////                            password = MD5.decrypt(password);
//                        } catch (Exception e) {
//                            e.printStackTrace();
//                        }
//                    }
//                }
//            }
//
//        }
//        if(username!=null && username !=""  && password!=null &password!=""){
//            int sendLogin = 1;
//            try {
//                sendLogin = (int) Login.sendLogin("userId="+username+"&password="+password+"").get("errorCode");
//            } catch (JSONException e) {
//                e.printStackTrace();
//            }
//            if(sendLogin==0){
//                return true;
//            }else {
//                return false;
//            }
//        }else{
//            return false;
//        }
//
//    }
//    private boolean isFilter(String path){
//        if(path.contains(".html") || path.contains(".action")){
//            return false;
//        }else{
//            return true;
//        }
//
//    }
//
//}
